<ResourceDictionary 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >

  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Shared.xaml" />
  </ResourceDictionary.MergedDictionaries>

  <Style x:Key="{x:Type TreeView}" TargetType="TreeView">
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="TreeView">
          <Border 
            Name="Border" 
            CornerRadius="1" 
            Background="#d9d9d9"
            BorderBrush="{StaticResource SolidBorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}" >
            <ScrollViewer 
              Focusable="False"
              CanContentScroll="False"
              Padding="0">
              <ItemsPresenter/>
            </ScrollViewer>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>

  <!--=================================================================
        TreeViewItem
    ==================================================================-->
  <Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
    <Setter Property="Focusable" Value="False"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ToggleButton">
          <Grid
            Width="15"
            Height="13"
            Background="Transparent">
            <Path x:Name="ExpandPath"
              HorizontalAlignment="Left" 
              VerticalAlignment="Center" 
              Margin="1,1,1,1"
              Fill="{StaticResource GlyphBrush}"
              Data="M 4 0 L 8 4 L 4 8 Z"/>
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsChecked"
                 Value="True">
              <Setter Property="Data"
                  TargetName="ExpandPath"
                  Value="M 0 4 L 8 4 L 4 8 Z"/>
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  <Style x:Key="TreeViewItemFocusVisual">
    <Setter Property="Control.Template">
      <Setter.Value>
        <ControlTemplate>
          <Border>
            <Rectangle Margin="0,0,0,0"
                   StrokeThickness="5"
                   Stroke="Black"
                   StrokeDashArray="1 2"
                   Opacity="0"/>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
    
  <Style x:Key="{x:Type TreeViewItem}"
       TargetType="{x:Type TreeViewItem}">
    <Setter Property="Background"
        Value="Transparent"/>
    <Setter Property="HorizontalContentAlignment"
        Value="{Binding Path=HorizontalContentAlignment,
                RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
    <Setter Property="VerticalContentAlignment"
        Value="{Binding Path=VerticalContentAlignment,
                RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
    <Setter Property="Padding"
        Value="1,0,0,0"/>
    <Setter Property="Foreground"
        Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
    <Setter Property="FocusVisualStyle"
        Value="{StaticResource TreeViewItemFocusVisual}"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TreeViewItem}">
          <Grid>
            <Grid.ColumnDefinitions>
              <ColumnDefinition MinWidth="19"
                        Width="Auto"/>
              <ColumnDefinition Width="Auto"/>
              <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
              <RowDefinition Height="Auto"/>
              <RowDefinition/>
            </Grid.RowDefinitions>
            <Border Margin="-2000,0,0,0" x:Name="bgBorder"
                Grid.Column="0" Grid.ColumnSpan="3" Background="{TemplateBinding Background}"
                BorderBrush="{TemplateBinding BorderBrush}" IsHitTestVisible="False"
                BorderThickness="{TemplateBinding BorderThickness}"
                Padding="8" />
                            <ToggleButton x:Name="Expander"
                    Style="{StaticResource ExpandCollapseToggleStyle}"
                    IsChecked="{Binding Path=IsExpanded,
                                RelativeSource={RelativeSource TemplatedParent}}"
                    ClickMode="Press"/>
            <Border Name="Bd"
                Grid.Column="1"
                Background="{TemplateBinding Background}"
                Padding="{TemplateBinding Padding}">
              <ContentPresenter x:Name="PART_Header"
                        ContentSource="Header"
                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
            </Border>
            <ItemsPresenter x:Name="ItemsHost"
                    Grid.Row="1"
                    Grid.Column="1"
                    Grid.ColumnSpan="2"/>
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsExpanded"
                 Value="false">
              <Setter TargetName="ItemsHost"
                  Property="Visibility"
                  Value="Collapsed"/>
            </Trigger>
            <Trigger Property="HasItems"
                 Value="false">
              <Setter TargetName="Expander"
                  Property="Visibility"
                  Value="Hidden"/>
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HasHeader"
                       Value="false"/>
                <Condition Property="Width"
                       Value="Auto"/>
              </MultiTrigger.Conditions>
              <Setter TargetName="PART_Header"
                  Property="MinWidth"
                  Value="75"/>
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HasHeader"
                       Value="false"/>
                <Condition Property="Height"
                       Value="Auto"/>
              </MultiTrigger.Conditions>
              <Setter TargetName="PART_Header"
                  Property="MinHeight"
                  Value="19"/>
            </MultiTrigger>
            <Trigger Property="IsSelected"
                 Value="true">
              <Setter TargetName="Bd"
                  Property="Background"
                  Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
              <Setter Property="Foreground"
                  Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
            </Trigger>
            <Trigger Property="IsTextSearchEnabled" Value="true">
                <Setter TargetName="bgBorder"
                  Property="IsHitTestVisible"
                  Value="true"/>
            </Trigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsSelected"
                       Value="true"/>
                <Condition Property="IsSelectionActive"
                       Value="false"/>
              </MultiTrigger.Conditions>
              <Setter TargetName="Bd"
                  Property="Background"
                  Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
              <Setter Property="Foreground"
                  Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            </MultiTrigger>
            <Trigger Property="IsEnabled"
                 Value="false">
              <Setter Property="Foreground"
                  Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>


</ResourceDictionary>